import Request from "@/js_sdk/luch-request/request.js";
import {
	BASE_URL
} from '@/common/config.js';
const http = new Request();
http.setConfig((config) => {
	/* config 为默认全局配置*/
	config.baseUrl = process.env.NODE_ENV === 'development' ? '' : BASE_URL;
	return config
})
/**
 * @param { Function} cancel - 取消请求,调用cancel 会取消本次请求，但是该函数的catch() 仍会执行; 不会进入响应拦截器
 *
 * @param {String} text ['handle cancel'| any] - catch((err) => {}) err.errMsg === 'handle cancel'。非必传，默认'handle cancel'
 * @cancel {Object} config - catch((err) => {}) err.config === config; 非必传，默认为request拦截器修改之前的config
 * function cancel(text, config) {}
 */
http.interceptor.request((config, cancel) => {
	/* cancel 为函数，如果调用会取消本次请求。需要注意：调用cancel,本次请求的catch仍会执行。必须return config */
	if (!config.selfLoading) {
		uni.showLoading({
			title: config.loading || '加载中',
			mask: true
		});
	}
	//const token = uni.getStorageSync('token');
	// config.header = {
	// 	...config.header
	// }
	config.data['store_id'] = uni.getStorageSync('store_id') || ''
	return config;
})

// 在请求之后拦截
http.interceptor.response((response) => {
	if(response.statusCode == 200 && response.config.data.login_type == 10){
		uni.hideLoading()
		return {
			result:1
		}
	}
	
	/* 对响应成功做点什么 （statusCode === 200），必须return response*/
	uni.hideLoading()
	if (response.data.msg == '请登录') {
		uni.showModal({
			title: '温馨提示',
			content: '您得登录已过期！',
			showCancel: false,
			confirmText: '重新登录',
			complete(res) {
				if (res.confirm) {
					uni.setStorageSync('userInfo','')
					uni.reLaunch({
						url: `/pages/login/index`
					})
				}
			}
		})
		return false;
	}
	if (response.data.result != 1) {
		uni.showToast({
			icon:'none',
			title: response.data.msg || '服务器错误'
		})
		//return response.data
		return Promise.reject(response)
	}
	console.log(response.data)
	return response.data
}, (response) => {
	uni.hideLoading()
	if(response.errMsg){
		uni.showToast({
			icon:'none',
			title: '登录过期，请重新登录'
		})
		setTimeout(()=>{
			uni.navigateTo({
				url: `/pages/login/index`
			})
		},1500)
	}
	/*  对响应错误做点什么 （statusCode !== 200），必须return response*/
	return Promise.reject(response)
})


export default http
